package com.lyy.polymorphic.detail;


/**
 * @Author:  GZQ
 * @date:  2024/11/18 22:39
 * @description: 多态的注意事项和细节讨论
 * (instanceof 比较操作符), 用于判断对象的运行类型是否为XX类型或者XX类型的子类型
 */

public class PolyDetail03 {
    public static void main(String[] args) {
        BB bb = new BB();
        System.out.println(bb instanceof BB); // true
        System.out.println(bb instanceof AA); // true

        // aa 编译类型是 AA, 运行类型是 BB
        AA aa = new BB();
        System.out.println(aa instanceof AA);
        System.out.println(aa instanceof BB);

        Object obj = new Object();
        System.out.println(obj instanceof AA); // false
        String str = "hello";
//        System.out.println(str instanceof AA); // 字符串和父类没有继承关系，所以不能使用 instanceof
        System.out.println(str instanceof Object); // true
    }
}

class AA {} // 父类

class BB extends AA {} // 子类